package com.chaoxin.lovehelp.common.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 * @author TengJay Huang
 * @version 1.0
 */

/**
 * MD5加盐密码加密工具类（固定盐值）
 */
public class MyMD5Util {

    // 固定盐值（建议修改为你自己的值）
    private static final String FIXED_SALT = "MyFixedSaltValue123!@#";

    // 禁止实例化
    private void PasswordUtil() {}

    /**
     * 生成MD5加盐加密密码
     * @param password 原始密码
     * @return 加密后的密码
     */
    public static String encrypt(String password) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            String saltedPassword = password + FIXED_SALT;
            byte[] hashBytes = md.digest(saltedPassword.getBytes());

            StringBuilder hexString = new StringBuilder();
            for (byte b : hashBytes) {
                String hex = Integer.toHexString(0xff  & b);
                if (hex.length()  == 1) {
                    hexString.append('0');
                }
                hexString.append(hex);
            }

            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5 algorithm not found", e);
        }
    }

    /**
     * 验证密码是否正确
     * @param inputPassword 用户输入的密码
     * @param storedPassword 数据库中存储的加密密码
     * @return 是否匹配
     */
    public static boolean verify(String inputPassword, String storedPassword) {
        String encryptedInput = encrypt(inputPassword);
        return encryptedInput.equals(storedPassword);
    }
}